#
# $Id$
#
# Copyright 2014, Juniper Networks, Inc.
# All rights reserved.
# This SOFTWARE is licensed under the LICENSE provided in the
# ../Copyright file. By downloading, installing, copying, or otherwise
# using the SOFTWARE, you agree to be bound by the terms of that
# LICENSE.

ACLOCAL_AMFLAGS = -I m4

SUBDIRS = bin libxo xo xopo xolint xohtml tests doc encoder
bin_SCRIPTS=libxo-config
dist_doc_DATA = Copyright

EXTRA_DIST = \
    libxo-config.in \
    warnings.mk \
    README.md \
    INSTALL.md \
    packaging/libxo.spec

.PHONY: test tests

test tests:
	@(cd tests ; ${MAKE} test)

errors:
	@(cd tests/errors ; ${MAKE} test)

docs:
	@(cd doc ; ${MAKE} docs)

DIST_FILES_DIR = ~/Dropbox/dist-files/
GH_PAGES_DIR = gh-pages/
GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION}
PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz

XOHTML_FILES = \
    ${top_srcdir}/xohtml/xohtml.css \
    ${top_srcdir}/xohtml/xohtml.js \
    ${top_srcdir}/xohtml/external/jquery.js \
    ${top_srcdir}/xohtml/external/jquery.qtip.css \
    ${top_srcdir}/xohtml/external/jquery.qtip.js

upload: dist upload-docs upload-xohtml-files
	@echo "Remember to run:"
	@echo "        gt tag ${PACKAGE_VERSION}"

upload-docs: docs upload-html

upload-html:
	@echo "Uploading html ... "
	@-[ -d ${GH_PAGES_DIR} -a -d doc/html ] \
		&& echo "Updating html on gh-pages ..." \
		&& mkdir -p ${GH_PAGES_DIR_VER}/html \
		&& cp doc/top-link.html ${GH_PAGES_DIR}/libxo.html \
		&& cp -r doc/html/* ${GH_PAGES_DIR_VER}/html/ \
		&& (cd ${GH_PAGES_DIR} \
			&& git add libxo.html \
			&& git add ${PACKAGE_VERSION}/html \
			&& git commit -m 'new docs' \
                               libxo.html ${PACKAGE_VERSION}/html \
			&& git push origin gh-pages ) ; true

upload-xohtml-files:
	@echo "Uploading xohtml files ... "
	@-[ -d ${GH_PAGES_DIR} ] \
		&& echo "Updating xohtml files on gh-pages ..." \
		&& mkdir -p ${GH_PAGES_DIR_VER}/xohtml \
		&& cp ${XOHTML_FILES} ${GH_PAGES_DIR_VER}/xohtml \
		&& (cd ${GH_PAGES_DIR} \
			&& git add ${PACKAGE_VERSION}/xohtml \
			&& git commit -m 'new xohtml files' \
                               ${PACKAGE_VERSION}/xohtml \
			&& git push origin gh-pages ) ; true

pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA = packaging/${PACKAGE_NAME}.pc

get-wiki:
	git clone https://github.com/Juniper/${PACKAGE_NAME}.wiki.git wiki

get-gh-pages:
	git clone https://github.com/Juniper/${PACKAGE_NAME}.git \
		gh-pages -b gh-pages

UPDATE_PACKAGE_FILE = \
    -e "s;__SHA1__;$$SHA1;" \
    -e "s;__SHA256__;SHA256 (textproc/${PACKAGE_FILE}) = $$SHA256;" \
    -e "s;__SIZE__;SIZE (textproc/${PACKAGE_FILE}) = $$SIZE;"

GH_PACKAGING_DIR = ${PACKAGE_VERSION}/packaging
GH_PAGES_PACKAGE_DIR = ${GH_PAGES_DIR}/${GH_PACKAGING_DIR}

packages:
	@-[ -d ${GH_PAGES_DIR} ] && set -x \
		&& echo "Updating packages on gh-pages ..." \
                && mkdir -p ${GH_PAGES_DIR}/${GH_PACKAGING_DIR} \
		&& SHA1="`openssl sha1 ${PACKAGE_FILE} | awk '{print $$2}'`" \
		&& SHA256="`openssl sha256 ${PACKAGE_FILE} | awk '{print $$2}'`" \
		&& SIZE="`ls -l ${PACKAGE_FILE} | awk '{print $$5}'`" \
		&& echo "... ${GH_PAGES_PACKAGE_DIR}/${PACKAGE_NAME}.rb ..." \
		&& sed ${UPDATE_PACKAGE_FILE} \
			packaging/${PACKAGE_NAME}.rb.base \
			> ${GH_PAGES_PACKAGE_DIR}/${PACKAGE_NAME}.rb \
		&& echo "... ${GH_PAGES_PACKAGE_DIR}/${PACKAGE_NAME}.spec ..." \
		&& cp packaging/${PACKAGE_NAME}.spec \
			${GH_PAGES_PACKAGE_DIR}/${PACKAGE_NAME}.spec \
		&& (cd ${GH_PAGES_DIR} \
			&& git add ${GH_PACKAGING_DIR} \
			&& git add ${GH_PACKAGING_DIR}/libxo.rb \
                                   ${GH_PACKAGING_DIR}/libxo.spec \
			&& git commit -m 'new packaging data' \
                               ${GH_PACKAGING_DIR} \
			&& git push origin gh-pages ) ; true

ANALYZE_DIR = ~/trash/libxo
ANALYZE_CMD = scan-build-mp-3.6

analyze:
	${MAKE} clean
	${ANALYZE_CMD} -o ${ANALYZE_DIR} ${MAKE}

SANIFLAGS=-fno-omit-frame-pointer -g -O2

sanitize-address:
	${MAKE} clean
	${MAKE} CFLAGS="-fsanitize=address ${SANIFLAGS}"
	${MAKE} install
	${MAKE} test

sanitize-undefined:
	${MAKE} clean
	${MAKE} CFLAGS="-fsanitize=undefined ${SANIFLAGS}"
	${MAKE} install
	${MAKE} test

sanitize-memory:
	${MAKE} clean
	${MAKE} CFLAGS="-fsanitize=memory ${SANIFLAGS}"
	${MAKE} install
	${MAKE} test
